package com.zut.view;

import com.zut.entity.Manager;
import com.zut.entity.Student;
import com.zut.entity.Teacher;
import com.zut.service.ManagerService;
import com.zut.service.StudentService;
import com.zut.service.TeacherService;
import com.zut.service.impl.ManagerServiceImpl;
import com.zut.service.impl.StudentServiceImpl;
import com.zut.service.impl.TeacherServiceImpl;

import java.util.Scanner;

/**
 * 管理员界面
 */
public class LoginView {
    private Manager loginUser;
    private  Teacher teacher;
    private Student student;

    //成绩界面对象
    private ScoreView sv = new ScoreView();

    //学生界面
    private StudentView stv = new StudentView();

    //创建一个扫描器对象
    private Scanner sc = new Scanner(System.in);

    //创建管理员业务对象
    private ManagerService ms = new ManagerServiceImpl();

    //创建一个教师的业务对象
    private TeacherService ts = new TeacherServiceImpl();
    private StudentService stus = new StudentServiceImpl();

    /**
     * 登录页面
     */
    public void loginPage(){

        while(true) {
            System.out.println("+++++++教务管理系统登录界面+++++++");
            System.out.println("请选择登录身份:1、管理员登录 2、教师登录 3、学生登录 0、退出系统");

            //接收用户输入的选项
            String num = sc.nextLine();
            switch (num){
                case "1"://管理员登录页面
                    mangerLoginPage();
                    break;

                case "2": //教师登录页面
                    teacherLoginPage();
                    break;
                case "3":
                    studentLoginPage();
                    break;
                case "0":
                    return;
                default:
                    System.out.println("功能暂未开放，请重新选择");
            }
        }


    }

    /**
     * 学生登录页面
     */
    private void studentLoginPage() {

        System.out.println("+++++++学生登录+++++++");
        System.out.println("请输入学生学号:");
        String sid = sc.nextLine();

        System.out.println("请输入密码:");
        String password = sc.nextLine();

        //使用教师业务对象,调用登录业务
        student = stus.login(sid,password);

        //根据业务结果提示
        if(student!=null){
            System.out.println("登录成功");
            //调用学生的操作菜单
            studentManagePage();
            return;
        }
            System.out.println("账号或密码错误");
    }

    /**
     * 学生操作界面
     */
    private void studentManagePage() {

        while(true) {
            System.out.println("+++++++学生管理系统+++++++");
            System.out.println("1、修改密码 2、修改联系电话  3、查询个人成绩 4、修改家庭地址 0、退出系统");
            String num = sc.nextLine();

            switch (num){
                case "1":
                    stv.updatePassword(student);
                    break;
                case "2":
                    stv.updatePhoneNum(student.getId());
                    break;
                case "3":
                    sv.findSocresBySidPage(student.getId());
                    break;
                case"4":
                    stv.updateAddress(student.getId());
                    break;
                case "0":
                    return;
                default:
                    System.out.println("功能暂未开放，请重新选择");
            }
        }
    }


    /**
     * 教师登录页面
     */
    private void teacherLoginPage() {

        System.out.println("+++++++教师登录+++++++");
        System.out.println("请输入教师编号:");
        String tid = sc.nextLine();

        System.out.println("请输入密码:");
        String password = sc.nextLine();

        //使用教师业务对象,调用登录业务
        teacher = ts.login(tid,password);

        //根据业务结果提示
        if(teacher!=null){

            System.out.println("登录成功");
            //调用教师的操作菜单
            teacherManaPage();
            return;
        }else{

            System.out.println("账号或密码错误");
        }


    }

    /**
     * 教师的工作菜单
     */
    private void teacherManaPage() {
           TeacherView tv =  new TeacherView(teacher);


        while (true) {
            System.out.println("+++++++欢迎," + teacher.getName() + "进入教师操作系统+++++++");
            System.out.println("请选择功能:1、修改密码 2、修改手机号 3、修改地址 4、管理教授的课程成绩 0、退出管理");

            //接收选项功能
            String num = sc.nextLine();

            switch (num) {

                case "1":
                   tv.updateTeacherPasswordPage();
                    break;

                case "2":
                    tv.updateTeacherPhoneNumpage();
                    break;

                case "3":
                    //tv.updateTeacherAddressPage();
                    break;

                case "4":
                    sv.manageCourseScorePage(teacher.getId());
                    break;

                case "0":
                    return;
                default:
                    System.out.println("功能暂未开放，请重新选择");
            }

        }

    }

    /**
     * 管理员登录页面
     */
    private void mangerLoginPage() {
        System.out.println("请输入管理员账号:");
        String username = sc.nextLine();

        System.out.println("请输入管理员密码:");
        String password = sc.nextLine();

        //调用管理员业务方法
        loginUser = ms.login(username, password);

        //根据结果进行提示
        if(loginUser!=null){
            System.out.println("登录成功");

            //调用管理员系统的操作菜单
            systemManage();

        }else{
            System.out.println("账号或密码错误");
        }

    }

    /**
     * 管理员操作的主界面
     */
    private void systemManage() {

        while(true){
            System.out.println("+++++++管理员系统+++++++");
            System.out.println("请选择功能：1、班级管理 2、课程管理 3、教师信息管理 4、学生信息管理 5、修改管理员密码 0、退出");
            String num = sc.nextLine();
            switch (num){

                case "1":
                    new ClassesView().classesMainPage();
                    break;

                case "2":
                    new CourseView().courseMainPage();
                    break;

                case "3":
                    new TeacherView().teacherMainPage();
                    break;

                case "4":
                    new StudentView().studentMainPage();
                    break;

                case "5":
                    new MangerView().updatePsswordPage(loginUser);
                    System.out.println("修改密码");
                    break;

                case "0":
                    return;

                default:
                    System.out.println("暂无该功能");

            }

        }

    }


}
